home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 43 / Amiga Format CD43 (1999)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-09].iso / -serious- / wb / backclock / sources / conf.c next >
C/C++ Source or Header  |  1999-06-15  |  5KB  |  171 lines

  1. /*****************************************************************************
  2.  * 
  3.  * name                                 : conf.c
  4.  * description                  : load & save prefs file
  5.  * version                              : 1.2
  6.  *
  7.  * created                              : 08-03-98
  8.  * last change                  : 10-01-99
  9.  *
  10.  * version:
  11.  * 1.0 : initial
  12.  * 1.1a: minor fix
  13.  * 1.1b: Default configuration fixed
  14.  * 1.1c: minor change
  15.  * 1.2 : added support for new options (shadows and middle point)  
  16.  *****************************************************************************
  17.  */
  18. #include <dos/dos.h>
  19. #include <exec/memory.h>
  20. #include <intuition/intuition.h>
  21. #include <proto/exec.h>
  22. #include <proto/dos.h>
  23. #include <proto/intuition.h>
  24. #include <string.h>
  25. #include "utils.h"
  26. #include "conf.h"
  27. #include "obp.h"
  28.  
  29.  
  30.  
  31. void SaveEnv(idWin * prj, BOOL envarc) {
  32.   UBYTE * txtform = NULL ;
  33.   if (!SaveConf(prj, CF_NAMEENV)) {
  34.     /* error during saving
  35.      */
  36.     if (txtform = AllocVec(100, MEMF_PUBLIC|MEMF_CLEAR)) {
  37.       /* open an info request
  38.        */
  39.       strcat(txtform, ERR_ENV) ;
  40.       Fault(prj->lastError, ERR_ENV, txtform, 100) ;  
  41.       ez_req("BackClock request", txtform, "Continue", &(prj->lastError)) ;
  42.       FreeVec(txtform) ;
  43.     }
  44.   }
  45.   if (envarc) {
  46.     if (!SaveConf(prj, CF_NAMEENVARC)) {
  47.       /* error during saving
  48.        */
  49.       if (txtform = AllocVec(100, MEMF_PUBLIC|MEMF_CLEAR)) {
  50.         /* open an info request
  51.          */
  52.         strcat(txtform, ERR_ENVARC) ;
  53.         Fault(prj->lastError, ERR_ENVARC, txtform, 100) ;  
  54.         ez_req("BackClock request", txtform, "Continue", &(prj->lastError)) ;
  55.         FreeVec(txtform) ;
  56.       }
  57.     }
  58.   }
  59. }
  60.  
  61.  
  62. BOOL SaveConf(idWin * prj, UBYTE * fl_name) {
  63.   struct ConfFile cf_save ;
  64.   ULONG file ;
  65.   BOOL ret=FALSE ;
  66.   int i ;
  67.   
  68.   CopyMem("BACK", cf_save.id, 4) ;
  69.   cf_save.posX = prj->backWin.posX ;
  70.   cf_save.posY = prj->backWin.posY ;
  71.   cf_save.lenX = prj->backWin.width ;
  72.   cf_save.lenY = prj->backWin.height ;
  73.   for(i = 0; i<NUM_COLORS; i++)
  74.     CopyMem(&(prj->backWin.cmap[i]), &(cf_save.cmap[i]), sizeof(struct RGB)) ;
  75.   cf_save.cmap[COL_BLA].R = 0 ;
  76.   cf_save.cmap[COL_BLA].G = 0 ;
  77.   cf_save.cmap[COL_BLA].B = 0 ;
  78.   
  79.  
  80.   cf_save.filln = prj->backWin.filln ;
  81.   cf_save.fill = prj->backWin.fill ;
  82.   cf_save.drawsec = prj->backWin.drawsec ;
  83.   cf_save.drawsha = prj->backWin.drawsha ;
  84.   cf_save.drawmpo = prj->backWin.drawmpo ;
  85.   
  86.   if (cf_save.fill !=0) cf_save.fill = -1 ;
  87.   if (file = Open(fl_name, MODE_NEWFILE)) {
  88.     Write(file, &cf_save, sizeof(struct ConfFile)) ;
  89.     Close(file) ;
  90.     prj->lastError = OK ;
  91.     ret=TRUE ;
  92.   }else prj->lastError = IoErr() ;
  93.   return ret ;
  94. }
  95.  
  96.  
  97. BOOL LoadConf(idWin * prj) {
  98.   /* Reload configuration file
  99.    */
  100.   struct ConfFile cf_load ;
  101.   ULONG file ;
  102.   BOOL ret = FALSE ;
  103.   int i ;
  104.  
  105.   prj->lastError = IoErr() ;
  106.   prj->backWin.posX =     0 ;
  107.   prj->backWin.posY =     prj->wb->BarHeight ;
  108.   prj->backWin.width =  100 ;
  109.   prj->backWin.height = 100 ;
  110.   prj->backWin.cmap[COL_SEC].reg = (UBYTE)getPen(prj, 0, 100, 200) ;
  111.   prj->backWin.cmap[COL_MIN].reg = (UBYTE)getPen(prj, 255, 0, 0) ;
  112.   prj->backWin.cmap[COL_HEU].reg = (UBYTE)getPen(prj, 0, 255, 0) ;
  113.   prj->backWin.cmap[COL_TIC].reg = (UBYTE)getPen(prj, 0, 0, 255) ;
  114.   prj->backWin.cmap[COL_BAC].reg = (UBYTE)getPen(prj, 0, 0, 0) ;
  115.   prj->backWin.cmap[COL_MPO].reg = (UBYTE)getPen(prj, 0, 0, 0) ;
  116.   prj->backWin.cmap[COL_BLA].reg = (UBYTE)getPen(prj, 0, 0, 0) ;
  117.   prj->backWin.cmap[COL_SEC].R   = 0 ;
  118.   prj->backWin.cmap[COL_SEC].G   = 100 ;
  119.   prj->backWin.cmap[COL_SEC].B   = 200 ;
  120.   prj->backWin.cmap[COL_MIN].R   = 255 ;
  121.   prj->backWin.cmap[COL_MIN].G   = 0 ;
  122.   prj->backWin.cmap[COL_MIN].B   = 0 ;
  123.   prj->backWin.cmap[COL_HEU].R   = 0 ;
  124.   prj->backWin.cmap[COL_HEU].G   = 255 ;
  125.   prj->backWin.cmap[COL_HEU].B   = 0 ;
  126.   prj->backWin.cmap[COL_TIC].R   = 0 ;
  127.   prj->backWin.cmap[COL_TIC].G   = 0 ;
  128.   prj->backWin.cmap[COL_TIC].B   = 255 ;
  129.   prj->backWin.cmap[COL_BAC].R   = 0 ;
  130.   prj->backWin.cmap[COL_BAC].G   = 0 ;
  131.   prj->backWin.cmap[COL_BAC].B   = 0 ;
  132.   prj->backWin.cmap[COL_MPO].R   = 0 ;
  133.   prj->backWin.cmap[COL_MPO].G   = 0 ;
  134.   prj->backWin.cmap[COL_MPO].B   = 0 ;
  135.  
  136.   prj->backWin.cmap[COL_BLA].R   = 0 ;
  137.   prj->backWin.cmap[COL_BLA].G   = 0 ;
  138.   prj->backWin.cmap[COL_BLA].B   = 0 ;
  139.  
  140.   prj->backWin.fill = FALSE ;
  141.   prj->backWin.filln = TRUE ;
  142.   prj->backWin.drawsha = TRUE ;
  143.   prj->backWin.drawmpo = TRUE ;
  144.   if (file = Open("ENV:backclock.prefs", MODE_OLDFILE)) {
  145.     Read(file, &cf_load, 4) ;
  146.     if ((cf_load.id[0] == 'B') && 
  147.         (cf_load.id[1] == 'A') && 
  148.         (cf_load.id[2] == 'C') && 
  149.         (cf_load.id[3] == 'K')) {
  150.       Seek(file, 0, OFFSET_BEGINNING) ;
  151.       Read(file, &cf_load, sizeof(struct ConfFile)) ;
  152.       prj->backWin.posX = cf_load.posX ;
  153.       prj->backWin.posY = cf_load.posY ;
  154.       prj->backWin.width = cf_load.lenX ;
  155.       prj->backWin.height = cf_load.lenY ;
  156.       for(i = 0; i < NUM_COLORS; i++)
  157.         CopyMem(&(cf_load.cmap[i]), &(prj->backWin.cmap[i]), sizeof(struct RGB)) ;
  158.       prj->backWin.fill = (BOOL)cf_load.fill ;
  159.       prj->backWin.filln = cf_load.filln ;
  160.       prj->backWin.drawsec = cf_load.drawsec ;
  161.       prj->backWin.drawsha = cf_load.drawsha ;
  162.       prj->backWin.drawmpo = cf_load.drawmpo ;
  163.       initColors(prj) ;
  164.       ret = TRUE ;
  165.       prj->lastError = OK ;
  166.     }
  167.     Close(file) ;
  168.   }
  169.   return(ret) ;
  170. }
  171.